package com.chain.face;

/**
 * 抽象处理者(Handler)角色：定义出一个处理请求的接口。如果需要，接口可以定义
 * 出一个方法以设定和返回对下家的引用。这个角色通常由一个Java抽象类或者Java接口实现
 * 。上图中Handler类的聚合关系给出了具体子类对下家的引用，抽象方法handleRequest()规范了子类处理请求的操作。
 * 
 * @author dell
 * 
 */
public abstract class Handler {

	/**
	 * 持有后继的责任对象
	 */
	protected Handler successor;

	/**
	 * 示意处理请求的方法，虽然这个示意方法是没有传入参数的 但实际是可以传入参数的，根据具体需要来选择是否传递参数。
	 * 
	 * 处理聚餐费用的申请
	 * 
	 * @param user
	 *            申请人
	 * @param fee
	 *            申请的钱数
	 * @return 成功或失败的具体通知
	 */
	public abstract String handleRequest(String user, double fee);

	/**
	 * 取值方法
	 */
	public Handler getSuccessor() {
		return successor;
	}

	/**
	 * 赋值方法，设置后继的责任对象
	 */
	public void setSuccessor(Handler successor) {
		this.successor = successor;
	}

}
